package com.itheima.reggie.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * @author 程达
 * @PackageName:com.itheima.reggie.entity
 * @ClassName:Employee
 * @Description:
 * @date 2022/5/22 11:39
 **/
//Serializable启用其序列化功能的接口
// 目的:将对象状态转换为可保持或传输的格式
// 把对象转换为字节序列的过程称为对象的序列化

/**
 * 封装数据的
 *    1:封装数据库数据,因为mybatis_plus
 *       操作sql语句的时候,字段的提取 也来自这个类.
 *       这个类里面的字段要和 数据库表保持一致.
 *       mp默认的表名 就是类名 小写
 *    2:封装客户端传递来的数据  用在Controller
 *      (@RequestBody Employee employee)
 *     把请求体数据 设置到 这个对象中
 *     **/
//@TableName("employee")和表名一样的时候可以不写这个声明注解
@Data
public class Employee implements Serializable {

    private static final long serialVersionUID = 1L;//定义序列化程序id

    private Long id;

    private  String username;

    private String name;

    private String password;

    private String phone;

    private String sex;

    private String idNumber;//驼峰命名法 ---> 映射的字段名为 id_number    //  因为我们在 mybatisplus 设置了 驼峰和 下划线对应关系

    private Integer status;

    @TableField(fill = FieldFill.INSERT)//插入时填充字段
    private LocalDateTime createTime;

    //表字段就叫元数据
    //字段填充策略 FieldFill  MP的注解  表字段 策略 字段策略
    @TableField(fill = FieldFill.INSERT_UPDATE)//插入和更新时填充字段
    private LocalDateTime updateTime;

    @TableField(fill = FieldFill.INSERT)//插入时填充字段
    private Long createUser;
    //表字段     策略    字段策略   插入时填充字段
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Long updateUser;

}
